home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 008a / paragen2.zip / VLIB.PAS < prev    next >
Pascal/Delphi Source File  |  1991-03-28  |  46KB  |  1,730 lines

  1. (*----------------------------------------------------------------
  2.             VLIB.PAS Generated by PARAGen version 2.20          
  3. ------------------------------------------------------------------
  4.   PROJECT         : VIDLIB DEMO PROGRAM
  5.   AUTHOR          : Innovative Data Solutions, Inc.
  6.   DATE            : 03/14/1991
  7.   TIME            : 05:21PM
  8.   CODING STYLE    : 2  - [Standard C]
  9.   TAB EXPANSION   : ON
  10.   TABLE           : VLIB.DB - [Fields: 15, Key Fields: 2]
  11.   DATABASE FIELDS          PARADOX                   PARAGEN
  12.                            -------                   -------
  13.                     (01) - Category                  Category                  
  14.                     (02) - Title                     Title                     
  15.                     (03) - Rating                    Rating                    
  16.                     (04) - Director                  Director                  
  17.                     (05) - Stars                     Stars                     
  18.                     (06) - Cast                      Cast                      
  19.                     (07) - Company                   Company                   
  20.                     (08) - Date                      Date                      
  21.                     (09) - Price                     Price                     
  22.                     (10) - Tape                      Tape                      
  23.                     (11) - RunTime                   RunTime                   
  24.                     (12) - Format                    Format                    
  25.                     (13) - Start                     Start                     
  26.                     (14) - Stop                      Stop                      
  27.                     (15) - RunSpeed                  RunSpeed                  
  28.   GENERATED BY    : Innovative Data Solutions, Inc. Paradox Code Generator
  29.                     4318 Stewart Court
  30.                     East Chicago,  IN 46312
  31.                     (219)-397-8952
  32. -----------------------------------------------------------------*)
  33.  
  34. UNIT VLIB;
  35.  
  36. (*----------------------------------------------------------------
  37.                      Interface section of UNIT                      
  38. -----------------------------------------------------------------*)
  39.  
  40. INTERFACE
  41.  
  42. USES
  43.     PXEngine;
  44.  
  45. (*----------------------------------------------------------------
  46.                        'Pascal' Access Structure                       
  47. -----------------------------------------------------------------*)
  48.  
  49. TYPE
  50.  
  51.     VLIBTABLEENTRY = RECORD        
  52.         Category : string;                                (* KEY FIELD *)
  53.         Title : string;                                   (* KEY FIELD *)
  54.         Rating : string;                                  
  55.         Director : string;                                
  56.         Stars : string;                                   
  57.         Cast : string;                                    
  58.         Company : string;                                 
  59.         DateMonth : Integer;                              
  60.         DateDay : Integer;                                
  61.         DateYear : Integer;                               
  62.         Price : Double;                                   
  63.         Tape : Integer;                                   
  64.         RunTime : Double;                                 
  65.         Format : string;                                  
  66.         Start : Integer;                                  
  67.         Stop : Integer;                                   
  68.         RunSpeed : string;                                
  69.     END;
  70.  
  71.  
  72. (*----------------------------------------------------------------
  73.             Copy,Rename,Open,Get and Put Constants and Types                 
  74. -----------------------------------------------------------------*)
  75.  
  76.     SrcOrDestType = (Source,Destination);
  77.     GetOrPutType =  (Get,Put);
  78.  
  79. CONST
  80.  
  81.     NoPassword : String = 'None';
  82.     Buffered : Boolean = False;
  83.  
  84.     VLIBName : String = 'VLIB';
  85.  
  86.     
  87. (*----------------------------------------------------------------
  88.                             Field Size Constants                      
  89.     -----------------------------------------------------------------*)
  90.  
  91.     FSZCATEGORY : Integer =                 10;       (* KEY FIELD *)
  92.     FSZTITLE : Integer =                    40;       (* KEY FIELD *)
  93.     FSZRATING : Integer =                   5;        
  94.     FSZDIRECTOR : Integer =                 15;       
  95.     FSZSTARS : Integer =                    55;       
  96.     FSZCAST : Integer =                     30;       
  97.     FSZCOMPANY : Integer =                  15;       
  98.     FSZFORMAT : Integer =                   8;        
  99.     FSZRUNSPEED : Integer =                 10;       
  100.     
  101. (*----------------------------------------------------------------
  102.                Engine Handles and Global Variables                
  103. -----------------------------------------------------------------*)
  104.  
  105. VAR
  106.     VLIBTable : TableHandle;
  107.     VLIBRecord : RecordHandle;
  108.     VLIBCategory : FieldHandle;                            (* KEY FIELD *)
  109.     VLIBTitle : FieldHandle;                               (* KEY FIELD *)
  110.     VLIBRating : FieldHandle;                              
  111.     VLIBDirector : FieldHandle;                            
  112.     VLIBStars : FieldHandle;                               
  113.     VLIBCast : FieldHandle;                                
  114.     VLIBCompany : FieldHandle;                             
  115.     VLIBDate : FieldHandle;                                
  116.     VLIBPrice : FieldHandle;                               
  117.     VLIBTape : FieldHandle;                                
  118.     VLIBRunTime : FieldHandle;                             
  119.     VLIBFormat : FieldHandle;                              
  120.     VLIBStart : FieldHandle;                               
  121.     VLIBStop : FieldHandle;                                
  122.     VLIBRunSpeed : FieldHandle;                            
  123.     VLIBRet : Integer;
  124.  
  125. (*----------------------------------------------------------------
  126.                        Function Prototypes                        
  127. -----------------------------------------------------------------*)
  128.  
  129. FUNCTION VLIBError(ErrCode:Integer):Integer;
  130. FUNCTION VLIBTblOpen(Password:String):Integer;
  131. FUNCTION VLIBTblClose:Integer;
  132. FUNCTION VLIBTblCreate(TableSize:Integer):Integer;
  133. FUNCTION VLIBTblEmpty:Integer;
  134. FUNCTION VLIBTblDelete:Integer;
  135. FUNCTION VLIBTblCopy(FileName:String; SrcOrDest:SrcOrDestType):Integer;
  136. FUNCTION VLIBTblRename(DestTable:String):Integer;
  137. FUNCTION VLIBTblAdd(FileName:String; SrcOrDest:SrcOrDestType):Integer;
  138. FUNCTION VLIBTblEncrypt(Password:String):Integer;
  139. FUNCTION VLIBTblDecrypt(Password:String):Integer;
  140. FUNCTION VLIBTblExist(var Exists:Boolean):Integer;
  141. FUNCTION VLIBTblProtected(var IsProtected:Boolean):Integer;
  142. FUNCTION VLIBTblNRecs(var NumRecords:Longint):Integer;
  143. FUNCTION VLIBRecNum(var NumRecords:Longint):Integer;
  144. FUNCTION VLIBSrchKey(SearchMode,NumKeysToSearch:Integer; var RecordVal:VLIBTABLEENTRY):Integer;
  145. FUNCTION VLIBSrchFld(SearchMode:Integer; FieldToSearch:String; var RecordVal:VLIBTABLEENTRY):Integer;
  146. FUNCTION VLIBRecFirst(var RecordVal:VLIBTABLEENTRY):Integer;
  147. FUNCTION VLIBRecNext(var RecordVal:VLIBTABLEENTRY):Integer;
  148. FUNCTION VLIBRecPrev(var RecordVal:VLIBTABLEENTRY):Integer;
  149. FUNCTION VLIBRecLast(var RecordVal:VLIBTABLEENTRY):Integer;
  150. FUNCTION VLIBRecAppend(var RecordVal:VLIBTABLEENTRY):Integer;
  151. FUNCTION VLIBRecInsert(var RecordVal:VLIBTABLEENTRY):Integer;
  152. FUNCTION VLIBRecDelete:Integer;
  153. FUNCTION VLIBRecUpdate(var RecordVal:VLIBTABLEENTRY):Integer;
  154. FUNCTION VLIBRecGoto(RecordNumber:Longint):Integer;
  155. FUNCTION VLIBRecGet(var RecordVal:VLIBTABLEENTRY):Integer;
  156. FUNCTION VLIBFldType(fldHandle:FieldHandle; var FldType:NameString):Integer;
  157. FUNCTION VLIBFldBlank(fldHandle:FieldHandle; var IsBlank:Boolean):Integer;
  158. FUNCTION VLIBRecNFlds(var NumFields:Integer):Integer;
  159. FUNCTION VLIBKeyNFlds(var NumKeyFields:Integer):Integer;
  160. FUNCTION VLIBNetRecLocked(var IsLocked:Boolean):Integer;
  161. FUNCTION VLIBNetTblChanged(var IsChanged:Boolean):Integer;
  162. FUNCTION VLIBNetTblRefresh:Integer;
  163. FUNCTION VLIBNetTblUnlock(LockType:Integer):Integer;
  164. FUNCTION VLIBNetTblLock(LockType:Integer):Integer;
  165. FUNCTION VLIBNetRecUnlock(LckHandle:LockHandle):Integer;
  166. FUNCTION VLIBNetRecLock(var LckHandle:LockHandle):Integer;
  167. FUNCTION VLIBNetRecGotoLock(LckHandle:LockHandle):Integer;
  168. FUNCTION VLIBNetFileUnlock(LockType:Integer):Integer;
  169. FUNCTION VLIBNetFileLock(LockType:Integer):Integer;
  170. FUNCTION VLIBPopulateRecord(var RecordVal:VLIBTABLEENTRY; GetOrPut:GetOrPutType):Integer;
  171.  
  172. IMPLEMENTATION
  173.  
  174. (*----------------------------------------------------------------
  175.                           Function Implementation                  
  176. -----------------------------------------------------------------*)
  177.  
  178. FUNCTION VLIBError(ErrCode:Integer):Integer;
  179.  
  180. BEGIN
  181.     if (ErrCode > 0) then        
  182.         VLIBError := ErrCode
  183.     else        
  184.         VLIBError := PXSUCCESS;
  185. END;
  186.  
  187. FUNCTION VLIBTblOpen(Password:String):Integer;
  188.  
  189. BEGIN
  190.     if (Password <> NoPassword) then        
  191.         BEGIN
  192.             VLIBRet := PXPswAdd(Password);
  193.             if (VLIBRet <> PXSUCCESS) then                
  194.                 BEGIN
  195.                     VLIBRet := VLIBError(VLIBRet);
  196.                     if (VLIBRet <> PXSUCCESS) then                        
  197.                         BEGIN
  198.                             VLIBTblOpen := VLIBRet;
  199.                             Exit;
  200.                         END;
  201.                 END;
  202.         END;
  203.     VLIBRet := PXTblOpen('VLIB',VLIBTable,0,Buffered);
  204.     if (VLIBRet <> PXSUCCESS) then        
  205.         BEGIN
  206.             VLIBRet := VLIBError(VLIBRet);
  207.             if (VLIBRet <> PXSUCCESS) then                
  208.                 BEGIN
  209.                     VLIBTblOpen := VLIBRet;
  210.                     Exit;
  211.                 END;
  212.         END;
  213.     VLIBRet := PXRecBufOpen(VLIBTable,VLIBRecord);
  214.     if (VLIBRet <> PXSUCCESS) then        
  215.         BEGIN
  216.             VLIBRet := VLIBError(VLIBRet);
  217.             if (VLIBRet <> PXSUCCESS) then                
  218.                 BEGIN
  219.                     VLIBTblOpen := VLIBRet;
  220.                     Exit;
  221.                 END;
  222.         END;
  223.     VLIBRet := PXFldHandle(VLIBTable,'Category',VLIBCategory);
  224.     if (VLIBRet <> PXSUCCESS) then        
  225.         BEGIN
  226.             VLIBRet := VLIBError(VLIBRet);
  227.             if (VLIBRet <> PXSUCCESS) then                
  228.                 BEGIN
  229.                     VLIBTblOpen := VLIBRet;
  230.                     Exit;
  231.                 END;
  232.         END;
  233.     VLIBRet := PXFldHandle(VLIBTable,'Title',VLIBTitle);
  234.     if (VLIBRet <> PXSUCCESS) then        
  235.         BEGIN
  236.             VLIBRet := VLIBError(VLIBRet);
  237.             if (VLIBRet <> PXSUCCESS) then                
  238.                 BEGIN
  239.                     VLIBTblOpen := VLIBRet;
  240.                     Exit;
  241.                 END;
  242.         END;
  243.     VLIBRet := PXFldHandle(VLIBTable,'Rating',VLIBRating);
  244.     if (VLIBRet <> PXSUCCESS) then        
  245.         BEGIN
  246.             VLIBRet := VLIBError(VLIBRet);
  247.             if (VLIBRet <> PXSUCCESS) then                
  248.                 BEGIN
  249.                     VLIBTblOpen := VLIBRet;
  250.                     Exit;
  251.                 END;
  252.         END;
  253.     VLIBRet := PXFldHandle(VLIBTable,'Director',VLIBDirector);
  254.     if (VLIBRet <> PXSUCCESS) then        
  255.         BEGIN
  256.             VLIBRet := VLIBError(VLIBRet);
  257.             if (VLIBRet <> PXSUCCESS) then                
  258.                 BEGIN
  259.                     VLIBTblOpen := VLIBRet;
  260.                     Exit;
  261.                 END;
  262.         END;
  263.     VLIBRet := PXFldHandle(VLIBTable,'Stars',VLIBStars);
  264.     if (VLIBRet <> PXSUCCESS) then        
  265.         BEGIN
  266.             VLIBRet := VLIBError(VLIBRet);
  267.             if (VLIBRet <> PXSUCCESS) then                
  268.                 BEGIN
  269.                     VLIBTblOpen := VLIBRet;
  270.                     Exit;
  271.                 END;
  272.         END;
  273.     VLIBRet := PXFldHandle(VLIBTable,'Cast',VLIBCast);
  274.     if (VLIBRet <> PXSUCCESS) then        
  275.         BEGIN
  276.             VLIBRet := VLIBError(VLIBRet);
  277.             if (VLIBRet <> PXSUCCESS) then                
  278.                 BEGIN
  279.                     VLIBTblOpen := VLIBRet;
  280.                     Exit;
  281.                 END;
  282.         END;
  283.     VLIBRet := PXFldHandle(VLIBTable,'Company',VLIBCompany);
  284.     if (VLIBRet <> PXSUCCESS) then        
  285.         BEGIN
  286.             VLIBRet := VLIBError(VLIBRet);
  287.             if (VLIBRet <> PXSUCCESS) then                
  288.                 BEGIN
  289.                     VLIBTblOpen := VLIBRet;
  290.                     Exit;
  291.                 END;
  292.         END;
  293.     VLIBRet := PXFldHandle(VLIBTable,'Date',VLIBDate);
  294.     if (VLIBRet <> PXSUCCESS) then        
  295.         BEGIN
  296.             VLIBRet := VLIBError(VLIBRet);
  297.             if (VLIBRet <> PXSUCCESS) then                
  298.                 BEGIN
  299.                     VLIBTblOpen := VLIBRet;
  300.                     Exit;
  301.                 END;
  302.         END;
  303.     VLIBRet := PXFldHandle(VLIBTable,'Price',VLIBPrice);
  304.     if (VLIBRet <> PXSUCCESS) then        
  305.         BEGIN
  306.             VLIBRet := VLIBError(VLIBRet);
  307.             if (VLIBRet <> PXSUCCESS) then                
  308.                 BEGIN
  309.                     VLIBTblOpen := VLIBRet;
  310.                     Exit;
  311.                 END;
  312.         END;
  313.     VLIBRet := PXFldHandle(VLIBTable,'Tape',VLIBTape);
  314.     if (VLIBRet <> PXSUCCESS) then        
  315.         BEGIN
  316.             VLIBRet := VLIBError(VLIBRet);
  317.             if (VLIBRet <> PXSUCCESS) then                
  318.                 BEGIN
  319.                     VLIBTblOpen := VLIBRet;
  320.                     Exit;
  321.                 END;
  322.         END;
  323.     VLIBRet := PXFldHandle(VLIBTable,'RunTime',VLIBRunTime);
  324.     if (VLIBRet <> PXSUCCESS) then        
  325.         BEGIN
  326.             VLIBRet := VLIBError(VLIBRet);
  327.             if (VLIBRet <> PXSUCCESS) then                
  328.                 BEGIN
  329.                     VLIBTblOpen := VLIBRet;
  330.                     Exit;
  331.                 END;
  332.         END;
  333.     VLIBRet := PXFldHandle(VLIBTable,'Format',VLIBFormat);
  334.     if (VLIBRet <> PXSUCCESS) then        
  335.         BEGIN
  336.             VLIBRet := VLIBError(VLIBRet);
  337.             if (VLIBRet <> PXSUCCESS) then                
  338.                 BEGIN
  339.                     VLIBTblOpen := VLIBRet;
  340.                     Exit;
  341.                 END;
  342.         END;
  343.     VLIBRet := PXFldHandle(VLIBTable,'Start',VLIBStart);
  344.     if (VLIBRet <> PXSUCCESS) then        
  345.         BEGIN
  346.             VLIBRet := VLIBError(VLIBRet);
  347.             if (VLIBRet <> PXSUCCESS) then                
  348.                 BEGIN
  349.                     VLIBTblOpen := VLIBRet;
  350.                     Exit;
  351.                 END;
  352.         END;
  353.     VLIBRet := PXFldHandle(VLIBTable,'Stop',VLIBStop);
  354.     if (VLIBRet <> PXSUCCESS) then        
  355.         BEGIN
  356.             VLIBRet := VLIBError(VLIBRet);
  357.             if (VLIBRet <> PXSUCCESS) then                
  358.                 BEGIN
  359.                     VLIBTblOpen := VLIBRet;
  360.                     Exit;
  361.                 END;
  362.         END;
  363.     VLIBRet := PXFldHandle(VLIBTable,'RunSpeed',VLIBRunSpeed);
  364.     if (VLIBRet <> PXSUCCESS) then        
  365.         BEGIN
  366.             VLIBRet := VLIBError(VLIBRet);
  367.             if (VLIBRet <> PXSUCCESS) then                
  368.                 BEGIN
  369.                     VLIBTblOpen := VLIBRet;
  370.                     Exit;
  371.                 END;
  372.         END;
  373.     VLIBTblOpen := PXSUCCESS;
  374. END;
  375.  
  376. FUNCTION VLIBTblClose:Integer;
  377.  
  378. BEGIN
  379.     VLIBRet := PXTblClose(VLIBTable);
  380.     if (VLIBRet <> PXSUCCESS) then        
  381.         BEGIN
  382.             VLIBRet := VLIBError(VLIBRet);
  383.             if (VLIBRet <> PXSUCCESS) then                
  384.                 BEGIN
  385.                     VLIBTblClose := VLIBRet;
  386.                     Exit;
  387.                 END;
  388.         END;
  389.     VLIBTblClose := PXSUCCESS;
  390. END;
  391.  
  392. FUNCTION VLIBTblCreate(TableSize:Integer):Integer;
  393.  
  394. CONST    
  395.     VLIBFields : array[1..15] of NameString =
  396.         (
  397.         'Category',
  398.         'Title',
  399.         'Rating',
  400.         'Director',
  401.         'Stars',
  402.         'Cast',
  403.         'Company',
  404.         'Date',
  405.         'Price',
  406.         'Tape',
  407.         'RunTime',
  408.         'Format',
  409.         'Start',
  410.         'Stop',
  411.         'RunSpeed'
  412.         );
  413.  
  414.     VLIBTypes : array[1..15] of NameString =
  415.         (
  416.         'A10',
  417.         'A40',
  418.         'A5',
  419.         'A15',
  420.         'A55',
  421.         'A30',
  422.         'A15',
  423.         'D',
  424.         '$',
  425.         'S',
  426.         'N',
  427.         'A8',
  428.         'S',
  429.         'S',
  430.         'A10'
  431.         );
  432.  
  433. VAR    
  434.     VLIBFieldHandles : WordArray;
  435.  
  436. BEGIN
  437.     VLIBFieldHandles[1] := 1;
  438.     VLIBFieldHandles[2] := 2;
  439.     if (TableSize > 0) then        
  440.         BEGIN
  441.             VLIBRet := PXTblMaxSize(TableSize);
  442.             if (VLIBRet <> PXSUCCESS) then                
  443.                 BEGIN
  444.                     VLIBRet := VLIBError(VLIBRet);
  445.                     if (VLIBRet <> PXSUCCESS) then                        
  446.                         BEGIN
  447.                             VLIBTblCreate := VLIBRet;
  448.                             Exit;
  449.                         END;
  450.                 END;
  451.         END;
  452.     VLIBRet := PXTblCreate('VLIB',15,@VLIBFields,@VLIBTypes);
  453.     if (VLIBRet <> PXSUCCESS) then        
  454.         BEGIN
  455.             VLIBRet := VLIBError(VLIBRet);
  456.             if (VLIBRet <> PXSUCCESS) then                
  457.                 BEGIN
  458.                     VLIBTblCreate := VLIBRet;
  459.                     Exit;
  460.                 END;
  461.         END;
  462.     VLIBRet := PXKeyAdd('VLIB',2,VLIBFieldHandles,PRIMARY);
  463.     if (VLIBRet <> PXSUCCESS) then        
  464.         BEGIN
  465.             VLIBRet := VLIBError(VLIBRet);
  466.             if (VLIBRet <> PXSUCCESS) then                
  467.                 BEGIN
  468.                     VLIBTblCreate := VLIBRet;
  469.                     Exit;
  470.                 END;
  471.         END;
  472.     VLIBTblCreate := PXSUCCESS;
  473. END;
  474.  
  475. FUNCTION VLIBTblEmpty:Integer;
  476.  
  477. BEGIN
  478.     VLIBRet := PXTblEmpty('VLIB');
  479.     if (VLIBRet <> PXSUCCESS) then        
  480.         BEGIN
  481.             VLIBRet := VLIBError(VLIBRet);
  482.             if (VLIBRet <> PXSUCCESS) then                
  483.                 BEGIN
  484.                     VLIBTblEmpty := VLIBRet;
  485.                     Exit;
  486.                 END;
  487.         END;
  488.     VLIBTblEmpty := PXSUCCESS;
  489. END;
  490.  
  491. FUNCTION VLIBTblDelete:Integer;
  492.  
  493. BEGIN
  494.     VLIBRet := PXTblDelete('VLIB');
  495.     if (VLIBRet <> PXSUCCESS) then        
  496.         BEGIN
  497.             VLIBRet := VLIBError(VLIBRet);
  498.             if (VLIBRet <> PXSUCCESS) then                
  499.                 BEGIN
  500.                     VLIBTblDelete := VLIBRet;
  501.                     Exit;
  502.                 END;
  503.         END;
  504.     VLIBTblDelete := PXSUCCESS;
  505. END;
  506.  
  507. FUNCTION VLIBTblCopy(FileName:String; SrcOrDest:SrcOrDestType):Integer;
  508.  
  509. BEGIN
  510.     if (SrcOrDest = Source) then        
  511.         VLIBRet := PXTblCopy('VLIB',FileName)
  512.     else        
  513.         VLIBRet := PXTblCopy(FileName,'VLIB');
  514.     if (VLIBRet <> PXSUCCESS) then        
  515.         BEGIN
  516.             VLIBRet := VLIBError(VLIBRet);
  517.             if (VLIBRet <> PXSUCCESS) then                
  518.                 BEGIN
  519.                     VLIBTblCopy := VLIBRet;
  520.                     Exit;
  521.                 END;
  522.         END;
  523.     VLIBTblCopy := PXSUCCESS;
  524. END;
  525.  
  526. FUNCTION VLIBTblRename(DestTable:String):Integer;
  527.  
  528. BEGIN
  529.     VLIBRet := PXTblRename('VLIB',DestTable);
  530.     if (VLIBRet <> PXSUCCESS) then        
  531.         BEGIN
  532.             VLIBRet := VLIBError(VLIBRet);
  533.             if (VLIBRet <> PXSUCCESS) then                
  534.                 BEGIN
  535.                     VLIBTblRename := VLIBRet;
  536.                     Exit;
  537.                 END;
  538.         END;
  539.     VLIBTblRename := PXSUCCESS;
  540. END;
  541.  
  542. FUNCTION VLIBTblAdd(FileName:String; SrcOrDest:SrcOrDestType):Integer;
  543.  
  544. BEGIN
  545.     if (SrcOrDest = Source) then        
  546.         VLIBRet := PXTblAdd('VLIB',FileName)
  547.     else        
  548.         VLIBRet := PXTblAdd(FileName,'VLIB');
  549.     if (VLIBRet <> PXSUCCESS) then        
  550.         BEGIN
  551.             VLIBRet := VLIBError(VLIBRet);
  552.             if (VLIBRet <> PXSUCCESS) then                
  553.                 BEGIN
  554.                     VLIBTblAdd := VLIBRet;
  555.                     Exit;
  556.                 END;
  557.         END;
  558.     VLIBTblAdd := PXSUCCESS;
  559. END;
  560.  
  561. FUNCTION VLIBTblEncrypt(Password:String):Integer;
  562.  
  563. BEGIN
  564.     VLIBRet := PXTblEncrypt('VLIB',Password);
  565.     if (VLIBRet <> PXSUCCESS) then        
  566.         BEGIN
  567.             VLIBRet := VLIBError(VLIBRet);
  568.             if (VLIBRet <> PXSUCCESS) then                
  569.                 BEGIN
  570.                     VLIBTblEncrypt := VLIBRet;
  571.                     Exit;
  572.                 END;
  573.         END;
  574.     VLIBTblEncrypt := PXSUCCESS;
  575. END;
  576.  
  577. FUNCTION VLIBTblDecrypt(Password:String):Integer;
  578.  
  579. BEGIN
  580.     VLIBRet := PXPswAdd(Password);
  581.     if (VLIBRet <> PXSUCCESS) then        
  582.         BEGIN
  583.             VLIBRet := VLIBError(VLIBRet);
  584.             if (VLIBRet <> PXSUCCESS) then                
  585.                 BEGIN
  586.                     VLIBTblDecrypt := VLIBRet;
  587.                     Exit;
  588.                 END;
  589.         END;
  590.     VLIBRet := PXTblDecrypt('VLIB');
  591.     if (VLIBRet <> PXSUCCESS) then        
  592.         BEGIN
  593.             VLIBRet := VLIBError(VLIBRet);
  594.             if (VLIBRet <> PXSUCCESS) then                
  595.                 BEGIN
  596.                     VLIBTblDecrypt := VLIBRet;
  597.                     Exit;
  598.                 END;
  599.         END;
  600.     VLIBTblDecrypt := PXSUCCESS;
  601. END;
  602.  
  603. FUNCTION VLIBTblExist(var Exists:Boolean):Integer;
  604.  
  605. BEGIN
  606.     VLIBRet := PXTblExist('VLIB',Exists);
  607.     if (VLIBRet <> PXSUCCESS) then        
  608.         BEGIN
  609.             VLIBRet := VLIBError(VLIBRet);
  610.             if (VLIBRet <> PXSUCCESS) then                
  611.                 BEGIN
  612.                     VLIBTblExist := VLIBRet;
  613.                     Exit;
  614.                 END;
  615.         END;
  616.     VLIBTblExist := PXSUCCESS;
  617. END;
  618.  
  619. FUNCTION VLIBTblProtected(var IsProtected:Boolean):Integer;
  620.  
  621. BEGIN
  622.     VLIBRet := PXTblProtected('VLIB',IsProtected);
  623.     if (VLIBRet <> PXSUCCESS) then        
  624.         BEGIN
  625.             VLIBRet := VLIBError(VLIBRet);
  626.             if (VLIBRet <> PXSUCCESS) then                
  627.                 BEGIN
  628.                     VLIBTblProtected := VLIBRet;
  629.                     Exit;
  630.                 END;
  631.         END;
  632.     VLIBTblProtected := PXSUCCESS;
  633. END;
  634.  
  635. FUNCTION VLIBTblNRecs(var NumRecords:Longint):Integer;
  636.  
  637. BEGIN
  638.     VLIBRet := PXTblNRecs(VLIBTable,NumRecords);
  639.     if (VLIBRet <> PXSUCCESS) then        
  640.         BEGIN
  641.             VLIBRet := VLIBError(VLIBRet);
  642.             if (VLIBRet <> PXSUCCESS) then                
  643.                 BEGIN
  644.                     VLIBTblNRecs := VLIBRet;
  645.                     Exit;
  646.                 END;
  647.         END;
  648.     VLIBTblNrecs := PXSUCCESS;
  649. END;
  650.  
  651. FUNCTION VLIBRecNum(var NumRecords:Longint):Integer;
  652.  
  653. BEGIN
  654.     VLIBRet := PXRecNum(VLIBTable,NumRecords);
  655.     if (VLIBRet <> PXSUCCESS) then        
  656.         BEGIN
  657.             VLIBRet := VLIBError(VLIBRet);
  658.             if (VLIBRet <> PXSUCCESS) then                
  659.                 BEGIN
  660.                     VLIBRecNum := VLIBRet;
  661.                     Exit;
  662.                 END;
  663.         END;
  664.     VLIBRecNum := PXSUCCESS;
  665. END;
  666.  
  667. FUNCTION VLIBSrchKey(SearchMode,NumKeysToSearch:Integer; var RecordVal:VLIBTABLEENTRY):Integer;
  668.  
  669. VAR    
  670.     NKeysToSearch : Integer;
  671.  
  672. BEGIN
  673.     NKeysToSearch := NumKeysToSearch;
  674.     VLIBRet := PXRecBufEmpty(VLIBRecord);
  675.     if (VLIBRet <> PXSUCCESS) then        
  676.         BEGIN
  677.             VLIBRet := VLIBError(VLIBRet);
  678.             if (VLIBRet <> PXSUCCESS) then                
  679.                 BEGIN
  680.                     VLIBSrchKey := VLIBRet;
  681.                     Exit;
  682.                 END;
  683.         END;
  684.     repeat        
  685.         case NKeysToSearch of            
  686.             2 :                
  687.                 BEGIN
  688.                     VLIBRet := PXPutAlpha(VLIBRecord,VLIBTitle,RecordVal.Title);
  689.                     if (VLIBRet <> PXSUCCESS) then                        
  690.                         BEGIN
  691.                             VLIBRet := VLIBError(VLIBRet);
  692.                             if (VLIBRet <> PXSUCCESS) then                                
  693.                                 BEGIN
  694.                                     VLIBSrchKey := VLIBRet;
  695.                                     Exit;
  696.                                 END;
  697.                         END;
  698.                 END;
  699.             1 :                
  700.                 BEGIN
  701.                     VLIBRet := PXPutAlpha(VLIBRecord,VLIBCategory,RecordVal.Category);
  702.                     if (VLIBRet <> PXSUCCESS) then                        
  703.                         BEGIN
  704.                             VLIBRet := VLIBError(VLIBRet);
  705.                             if (VLIBRet <> PXSUCCESS) then                                
  706.                                 BEGIN
  707.                                     VLIBSrchKey := VLIBRet;
  708.                                     Exit;
  709.                                 END;
  710.                         END;
  711.                 END;
  712.         END;
  713.         NKeysToSearch := NKeysToSearch - 1;
  714.     until NKeysToSearch = 0;
  715.  
  716.     VLIBRet := PXSrchKey(VLIBTable,VLIBRecord,NumKeysToSearch,SearchMode);
  717.     if (VLIBRet <> PXSUCCESS) then        
  718.         BEGIN
  719.             VLIBRet := VLIBError(VLIBRet);
  720.             if (VLIBRet <> PXSUCCESS) then                
  721.                 BEGIN
  722.                     VLIBSrchKey := VLIBRet;
  723.                     Exit;
  724.                 END;
  725.         END;
  726.     VLIBRet := PXRecGet(VLIBTable,VLIBRecord);
  727.     if (VLIBRet <> PXSUCCESS) then        
  728.         BEGIN
  729.             VLIBRet := VLIBError(VLIBRet);
  730.             if (VLIBRet <> PXSUCCESS) then                
  731.                 BEGIN
  732.                     VLIBSrchKey := VLIBRet;
  733.                     Exit;
  734.                 END;
  735.         END;
  736.     VLIBRet := VLIBPopulateRecord(RecordVal,GET);
  737.     if (VLIBRet <> PXSUCCESS) then        
  738.         BEGIN
  739.             VLIBRet := VLIBError(VLIBRet);
  740.             if (VLIBRet <> PXSUCCESS) then                
  741.                 BEGIN
  742.                     VLIBSrchKey := VLIBRet;
  743.                     Exit;
  744.                 END;
  745.         END;
  746.     VLIBSrchKey := PXSUCCESS;
  747. END;
  748.  
  749. FUNCTION VLIBSrchFld(SearchMode:Integer; FieldToSearch:String; var RecordVal:VLIBTABLEENTRY):Integer;
  750.  
  751. VAR    
  752.     FldHandle : FIELDHANDLE;
  753.     Paradate : Longint;
  754. BEGIN
  755.     VLIBRet := PXFldHandle(VLIBTable,FieldToSearch,FldHandle);
  756.     if (VLIBRet <> PXSUCCESS) then        
  757.         BEGIN
  758.             VLIBRet := VLIBError(VLIBRet);
  759.             if (VLIBRet <> PXSUCCESS) then                
  760.                 BEGIN
  761.                     VLIBSrchFld := VLIBRet;
  762.                     Exit;
  763.                 END;
  764.         END;
  765.     VLIBRet := PXRecBufEmpty(VLIBRecord);
  766.     if (VLIBRet <> PXSUCCESS) then        
  767.         BEGIN
  768.             VLIBRet := VLIBError(VLIBRet);
  769.             if (VLIBRet <> PXSUCCESS) then                
  770.                 BEGIN
  771.                     VLIBSrchFld := VLIBRet;
  772.                     Exit;
  773.                 END;
  774.         END;
  775.     case FldHandle of        
  776.         1 :            
  777.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBCategory,RecordVal.Category);
  778.         2 :            
  779.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBTitle,RecordVal.Title);
  780.         3 :            
  781.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBRating,RecordVal.Rating);
  782.         4 :            
  783.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBDirector,RecordVal.Director);
  784.         5 :            
  785.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBStars,RecordVal.Stars);
  786.         6 :            
  787.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBCast,RecordVal.Cast);
  788.         7 :            
  789.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBCompany,RecordVal.Company);
  790.         8 :            
  791.             BEGIN
  792.                 VLIBRet := PXDateEncode(RecordVal.DateMonth,RecordVal.DateDay,RecordVal.DateYear,ParaDate);
  793.                 if (VLIBRet <> PXSUCCESS) then                    
  794.                     BEGIN
  795.                         VLIBRet := VLIBError(VLIBRet);
  796.                         if (VLIBRet <> PXSUCCESS) then                            
  797.                             BEGIN
  798.                                 VLIBSrchFld := VLIBRet;
  799.                                 Exit;
  800.                             END;
  801.                     END;
  802.                 VLIBRet := PXPutDate(VLIBRecord,VLIBDate,ParaDate);
  803.             END;
  804.         9 :            
  805.             VLIBRet := PXPutDoub(VLIBRecord,VLIBPrice,RecordVal.Price);
  806.         10 :            
  807.             VLIBRet := PXPutShort(VLIBRecord,VLIBTape,RecordVal.Tape);
  808.         11 :            
  809.             VLIBRet := PXPutDoub(VLIBRecord,VLIBRunTime,RecordVal.RunTime);
  810.         12 :            
  811.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBFormat,RecordVal.Format);
  812.         13 :            
  813.             VLIBRet := PXPutShort(VLIBRecord,VLIBStart,RecordVal.Start);
  814.         14 :            
  815.             VLIBRet := PXPutShort(VLIBRecord,VLIBStop,RecordVal.Stop);
  816.         15 :            
  817.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBRunSpeed,RecordVal.RunSpeed);
  818.     END;
  819.     if (VLIBRet <> PXSUCCESS) then        
  820.         BEGIN
  821.             VLIBRet := VLIBError(VLIBRet);
  822.             if (VLIBRet <> PXSUCCESS) then                
  823.                 BEGIN
  824.                     VLIBSrchFld := VLIBRet;
  825.                     Exit;
  826.                 END;
  827.         END;
  828.     VLIBRet := PXSrchFld(VLIBTable,VLIBRecord,FldHandle,SearchMode);
  829.     if (VLIBRet <> PXSUCCESS) then        
  830.         BEGIN
  831.             VLIBRet := VLIBError(VLIBRet);
  832.             if (VLIBRet <> PXSUCCESS) then                
  833.                 BEGIN
  834.                     VLIBSrchFld := VLIBRet;
  835.                     Exit;
  836.                 END;
  837.         END;
  838.     VLIBRet := PXRecGet(VLIBTable,VLIBRecord);
  839.     if (VLIBRet <> PXSUCCESS) then        
  840.         BEGIN
  841.             VLIBRet := VLIBError(VLIBRet);
  842.             if (VLIBRet <> PXSUCCESS) then                
  843.                 BEGIN
  844.                     VLIBSrchFld := VLIBRet;
  845.                     Exit;
  846.                 END;
  847.         END;
  848.     VLIBRet := VLIBPopulateRecord(RecordVal,GET);
  849.     if (VLIBRet <> PXSUCCESS) then        
  850.         BEGIN
  851.             VLIBRet := VLIBError(VLIBRet);
  852.             if (VLIBRet <> PXSUCCESS) then                
  853.                 BEGIN
  854.                     VLIBSrchFld := VLIBRet;
  855.                     Exit;
  856.                 END;
  857.         END;
  858.     VLIBSrchFld := PXSUCCESS;
  859. END;
  860.  
  861. FUNCTION VLIBRecFirst(var RecordVal:VLIBTABLEENTRY):Integer;
  862.  
  863. BEGIN
  864.     VLIBRet := PXRecFirst(VLIBTable);
  865.     if (VLIBRet <> PXSUCCESS) then        
  866.         BEGIN
  867.             VLIBRet := VLIBError(VLIBRet);
  868.             if (VLIBRet <> PXSUCCESS) then                
  869.                 BEGIN
  870.                     VLIBRecFirst := VLIBRet;
  871.                     Exit;
  872.                 END;
  873.         END;
  874.     VLIBRet := PXRecGet(VLIBTable,VLIBRecord);
  875.     if (VLIBRet <> PXSUCCESS) then        
  876.         BEGIN
  877.             VLIBRet := VLIBError(VLIBRet);
  878.             if (VLIBRet <> PXSUCCESS) then                
  879.                 BEGIN
  880.                     VLIBRecFirst := VLIBRet;
  881.                     Exit;
  882.                 END;
  883.         END;
  884.     VLIBRet := VLIBPopulateRecord(RecordVal,GET);
  885.     if (VLIBRet <> PXSUCCESS) then        
  886.         BEGIN
  887.             VLIBRet := VLIBError(VLIBRet);
  888.             if (VLIBRet <> PXSUCCESS) then                
  889.                 BEGIN
  890.                     VLIBRecFirst := VLIBRet;
  891.                     Exit;
  892.                 END;
  893.         END;
  894.     VLIBRecFirst := PXSUCCESS;
  895. END;
  896.  
  897. FUNCTION VLIBRecNext(var RecordVal:VLIBTABLEENTRY):Integer;
  898.  
  899. BEGIN
  900.     VLIBRet := PXRecNext(VLIBTable);
  901.     if (VLIBRet <> PXSUCCESS) then        
  902.         BEGIN
  903.             VLIBRet := VLIBError(VLIBRet);
  904.             if (VLIBRet <> PXSUCCESS) then                
  905.                 BEGIN
  906.                     VLIBRecNext := VLIBRet;
  907.                     Exit;
  908.                 END;
  909.         END;
  910.     VLIBRet := PXRecGet(VLIBTable,VLIBRecord);
  911.     if (VLIBRet <> PXSUCCESS) then        
  912.         BEGIN
  913.             VLIBRet := VLIBError(VLIBRet);
  914.             if (VLIBRet <> PXSUCCESS) then                
  915.                 BEGIN
  916.                     VLIBRecNext := VLIBRet;
  917.                     Exit;
  918.                 END;
  919.         END;
  920.     VLIBRet := VLIBPopulateRecord(RecordVal,GET);
  921.     if (VLIBRet <> PXSUCCESS) then        
  922.         BEGIN
  923.             VLIBRet := VLIBError(VLIBRet);
  924.             if (VLIBRet <> PXSUCCESS) then                
  925.                 BEGIN
  926.                     VLIBRecNext := VLIBRet;
  927.                     Exit;
  928.                 END;
  929.         END;
  930.     VLIBRecNext := PXSUCCESS;
  931. END;
  932.  
  933. FUNCTION VLIBRecPrev(var RecordVal:VLIBTABLEENTRY):Integer;
  934.  
  935. BEGIN
  936.     VLIBRet := PXRecPrev(VLIBTable);
  937.     if (VLIBRet <> PXSUCCESS) then        
  938.         BEGIN
  939.             VLIBRet := VLIBError(VLIBRet);
  940.             if (VLIBRet <> PXSUCCESS) then                
  941.                 BEGIN
  942.                     VLIBRecPrev := VLIBRet;
  943.                     Exit;
  944.                 END;
  945.         END;
  946.     VLIBRet := PXRecGet(VLIBTable,VLIBRecord);
  947.     if (VLIBRet <> PXSUCCESS) then        
  948.         BEGIN
  949.             VLIBRet := VLIBError(VLIBRet);
  950.             if (VLIBRet <> PXSUCCESS) then                
  951.                 BEGIN
  952.                     VLIBRecPrev := VLIBRet;
  953.                     Exit;
  954.                 END;
  955.         END;
  956.     VLIBRet := VLIBPopulateRecord(RecordVal,GET);
  957.     if (VLIBRet <> PXSUCCESS) then        
  958.         BEGIN
  959.             VLIBRet := VLIBError(VLIBRet);
  960.             if (VLIBRet <> PXSUCCESS) then                
  961.                 BEGIN
  962.                     VLIBRecPrev := VLIBRet;
  963.                     Exit;
  964.                 END;
  965.         END;
  966.     VLIBRecPrev := PXSUCCESS;
  967. END;
  968.  
  969. FUNCTION VLIBRecLast(var RecordVal:VLIBTABLEENTRY):Integer;
  970.  
  971. BEGIN
  972.     VLIBRet := PXRecLast(VLIBTable);
  973.     if (VLIBRet <> PXSUCCESS) then        
  974.         BEGIN
  975.             VLIBRet := VLIBError(VLIBRet);
  976.             if (VLIBRet <> PXSUCCESS) then                
  977.                 BEGIN
  978.                     VLIBRecLast := VLIBRet;
  979.                     Exit;
  980.                 END;
  981.         END;
  982.     VLIBRet := PXRecGet(VLIBTable,VLIBRecord);
  983.     if (VLIBRet <> PXSUCCESS) then        
  984.         BEGIN
  985.             VLIBRet := VLIBError(VLIBRet);
  986.             if (VLIBRet <> PXSUCCESS) then                
  987.                 BEGIN
  988.                     VLIBRecLast := VLIBRet;
  989.                     Exit;
  990.                 END;
  991.         END;
  992.     VLIBRet := VLIBPopulateRecord(RecordVal,GET);
  993.     if (VLIBRet <> PXSUCCESS) then        
  994.         BEGIN
  995.             VLIBRet := VLIBError(VLIBRet);
  996.             if (VLIBRet <> PXSUCCESS) then                
  997.                 BEGIN
  998.                     VLIBRecLast := VLIBRet;
  999.                     Exit;
  1000.                 END;
  1001.         END;
  1002.     VLIBRecLast := PXSUCCESS;
  1003. END;
  1004.  
  1005. FUNCTION VLIBRecAppend(var RecordVal:VLIBTABLEENTRY):Integer;
  1006.  
  1007. BEGIN
  1008.     VLIBRet := PXRecBufEmpty(VLIBRecord);
  1009.     if (VLIBRet <> PXSUCCESS) then        
  1010.         BEGIN
  1011.             VLIBRet := VLIBError(VLIBRet);
  1012.             if (VLIBRet <> PXSUCCESS) then                
  1013.                 BEGIN
  1014.                     VLIBRecAppend := VLIBRet;
  1015.                     Exit;
  1016.                 END;
  1017.         END;
  1018.     VLIBRet := VLIBPopulateRecord(RecordVal,PUT);
  1019.     if (VLIBRet <> PXSUCCESS) then        
  1020.         BEGIN
  1021.             VLIBRet := VLIBError(VLIBRet);
  1022.             if (VLIBRet <> PXSUCCESS) then                
  1023.                 BEGIN
  1024.                     VLIBRecAppend := VLIBRet;
  1025.                     Exit;
  1026.                 END;
  1027.         END;
  1028.     VLIBRet := PXRecAppend(VLIBTable,VLIBRecord);
  1029.     if (VLIBRet <> PXSUCCESS) then        
  1030.         BEGIN
  1031.             VLIBRet := VLIBError(VLIBRet);
  1032.             if (VLIBRet <> PXSUCCESS) then                
  1033.                 BEGIN
  1034.                     VLIBRecAppend := VLIBRet;
  1035.                     Exit;
  1036.                 END;
  1037.         END;
  1038.     VLIBRecAppend := PXSUCCESS;
  1039. END;
  1040.  
  1041. FUNCTION VLIBRecInsert(var RecordVal:VLIBTABLEENTRY):Integer;
  1042.  
  1043. BEGIN
  1044.     VLIBRet := PXRecBufEmpty(VLIBRecord);
  1045.     if (VLIBRet <> PXSUCCESS) then        
  1046.         BEGIN
  1047.             VLIBRet := VLIBError(VLIBRet);
  1048.             if (VLIBRet <> PXSUCCESS) then                
  1049.                 BEGIN
  1050.                     VLIBRecInsert := VLIBRet;
  1051.                     Exit;
  1052.                 END;
  1053.         END;
  1054.     VLIBRet := VLIBPopulateRecord(RecordVal,PUT);
  1055.     if (VLIBRet <> PXSUCCESS) then        
  1056.         BEGIN
  1057.             VLIBRet := VLIBError(VLIBRet);
  1058.             if (VLIBRet <> PXSUCCESS) then                
  1059.                 BEGIN
  1060.                     VLIBRecInsert := VLIBRet;
  1061.                     Exit;
  1062.                 END;
  1063.         END;
  1064.     VLIBRet := PXRecInsert(VLIBTable,VLIBRecord);
  1065.     if (VLIBRet <> PXSUCCESS) then        
  1066.         BEGIN
  1067.             VLIBRet := VLIBError(VLIBRet);
  1068.             if (VLIBRet <> PXSUCCESS) then                
  1069.                 BEGIN
  1070.                     VLIBRecInsert := VLIBRet;
  1071.                     Exit;
  1072.                 END;
  1073.         END;
  1074.     VLIBRecInsert := PXSUCCESS;
  1075. END;
  1076.  
  1077. FUNCTION VLIBRecDelete:Integer;
  1078.  
  1079. BEGIN
  1080.     VLIBRet := PXRecDelete(VLIBTable);
  1081.     if (VLIBRet <> PXSUCCESS) then        
  1082.         BEGIN
  1083.             VLIBRet := VLIBError(VLIBRet);
  1084.             if (VLIBRet <> PXSUCCESS) then                
  1085.                 BEGIN
  1086.                     VLIBRecDelete := VLIBRet;
  1087.                     Exit;
  1088.                 END;
  1089.         END;
  1090.     VLIBRecDelete := PXSUCCESS;
  1091. END;
  1092.  
  1093. FUNCTION VLIBRecUpdate(var RecordVal:VLIBTABLEENTRY):Integer;
  1094.  
  1095. BEGIN
  1096.     VLIBRet := PXRecBufEmpty(VLIBRecord);
  1097.     if (VLIBRet <> PXSUCCESS) then        
  1098.         BEGIN
  1099.             VLIBRet := VLIBError(VLIBRet);
  1100.             if (VLIBRet <> PXSUCCESS) then                
  1101.                 BEGIN
  1102.                     VLIBRecUpdate := VLIBRet;
  1103.                     Exit;
  1104.                 END;
  1105.         END;
  1106.     VLIBRet := VLIBPopulateRecord(RecordVal,PUT);
  1107.     if (VLIBRet <> PXSUCCESS) then        
  1108.         BEGIN
  1109.             VLIBRet := VLIBError(VLIBRet);
  1110.             if (VLIBRet <> PXSUCCESS) then                
  1111.                 BEGIN
  1112.                     VLIBRecUpdate := VLIBRet;
  1113.                     Exit;
  1114.                 END;
  1115.         END;
  1116.     VLIBRet := PXRecUpdate(VLIBTable,VLIBRecord);
  1117.     if (VLIBRet <> PXSUCCESS) then        
  1118.         BEGIN
  1119.             VLIBRet := VLIBError(VLIBRet);
  1120.             if (VLIBRet <> PXSUCCESS) then                
  1121.                 BEGIN
  1122.                     VLIBRecUpdate := VLIBRet;
  1123.                     Exit;
  1124.                 END;
  1125.         END;
  1126.     VLIBRecUpdate := PXSUCCESS;
  1127. END;
  1128.  
  1129. FUNCTION VLIBRecGoto(RecordNumber:Longint):Integer;
  1130.  
  1131. BEGIN
  1132.     VLIBRet := PXRecGoto(VLIBTable,RecordNumber);
  1133.     if (VLIBRet <> PXSUCCESS) then        
  1134.         BEGIN
  1135.             VLIBRet := VLIBError(VLIBRet);
  1136.             if (VLIBRet <> PXSUCCESS) then                
  1137.                 BEGIN
  1138.                     VLIBRecGoto := VLIBRet;
  1139.                     Exit;
  1140.                 END;
  1141.         END;
  1142.     VLIBRecGoto := PXSUCCESS;
  1143. END;
  1144.  
  1145. FUNCTION VLIBRecGet(var RecordVal:VLIBTABLEENTRY):Integer;
  1146.  
  1147. BEGIN
  1148.     VLIBRet := PXRecBufEmpty(VLIBRecord);
  1149.     if (VLIBRet <> PXSUCCESS) then        
  1150.         BEGIN
  1151.             VLIBRet := VLIBError(VLIBRet);
  1152.             if (VLIBRet <> PXSUCCESS) then                
  1153.                 BEGIN
  1154.                     VLIBRecGet := VLIBRet;
  1155.                     Exit;
  1156.                 END;
  1157.         END;
  1158.     VLIBRet := PXRecGet(VLIBTable,VLIBRecord);
  1159.     if (VLIBRet <> PXSUCCESS) then        
  1160.         BEGIN
  1161.             VLIBRet := VLIBError(VLIBRet);
  1162.             if (VLIBRet <> PXSUCCESS) then                
  1163.                 BEGIN
  1164.                     VLIBRecGet := VLIBRet;
  1165.                     Exit;
  1166.                 END;
  1167.         END;
  1168.     VLIBRet := VLIBPopulateRecord(RecordVal,GET);
  1169.     if (VLIBRet <> PXSUCCESS) then        
  1170.         BEGIN
  1171.             VLIBRet := VLIBError(VLIBRet);
  1172.             if (VLIBRet <> PXSUCCESS) then                
  1173.                 BEGIN
  1174.                     VLIBRecGet := VLIBRet;
  1175.                     Exit;
  1176.                 END;
  1177.         END;
  1178.     VLIBRecGet := PXSUCCESS;
  1179. END;
  1180.  
  1181. FUNCTION VLIBFldType(fldHandle:FieldHandle; var FldType:NameString):Integer;
  1182.  
  1183. BEGIN
  1184.     VLIBRet := PXFldType(VLIBTable,fldHandle,FldType);
  1185.     if (VLIBRet <> PXSUCCESS) then        
  1186.         BEGIN
  1187.             VLIBRet := VLIBError(VLIBRet);
  1188.             if (VLIBRet <> PXSUCCESS) then                
  1189.                 BEGIN
  1190.                     VLIBFldType := VLIBRet;
  1191.                     Exit;
  1192.                 END;
  1193.         END;
  1194.     VLIBFldType := PXSUCCESS;
  1195. END;
  1196.  
  1197. FUNCTION VLIBFldBlank(fldHandle:FieldHandle; var IsBlank:Boolean):Integer;
  1198.  
  1199. BEGIN
  1200.     VLIBRet := PXFldBlank(VLIBRecord,fldHandle,IsBlank);
  1201.     if (VLIBRet <> PXSUCCESS) then        
  1202.         BEGIN
  1203.             VLIBRet := VLIBError(VLIBRet);
  1204.             if (VLIBRet <> PXSUCCESS) then                
  1205.                 BEGIN
  1206.                     VLIBFldBlank := VLIBRet;
  1207.                     Exit;
  1208.                 END;
  1209.         END;
  1210.     VLIBFldBlank := PXSUCCESS;
  1211. END;
  1212.  
  1213. FUNCTION VLIBRecNFlds(var NumFields:Integer):Integer;
  1214.  
  1215. BEGIN
  1216.     VLIBRet := PXRecNFlds(VLIBTable,NumFields);
  1217.     if (VLIBRet <> PXSUCCESS) then        
  1218.         BEGIN
  1219.             VLIBRet := VLIBError(VLIBRet);
  1220.             if (VLIBRet <> PXSUCCESS) then                
  1221.                 BEGIN
  1222.                     VLIBRecNFlds := VLIBRet;
  1223.                     Exit;
  1224.                 END;
  1225.         END;
  1226.     VLIBRecNFlds := PXSUCCESS;
  1227. END;
  1228.  
  1229. FUNCTION VLIBKeyNFlds(var NumKeyFields:Integer):Integer;
  1230.  
  1231. BEGIN
  1232.     VLIBRet := PXKeyNFlds(VLIBTable,NumKeyFields);
  1233.     if (VLIBRet <> PXSUCCESS) then        
  1234.         BEGIN
  1235.             VLIBRet := VLIBError(VLIBRet);
  1236.             if (VLIBRet <> PXSUCCESS) then                
  1237.                 BEGIN
  1238.                     VLIBKeyNFlds := VLIBRet;
  1239.                     Exit;
  1240.                 END;
  1241.         END;
  1242.     VLIBKeyNFlds := PXSUCCESS;
  1243. END;
  1244.  
  1245. FUNCTION VLIBNetRecLocked(var IsLocked:Boolean):Integer;
  1246. BEGIN
  1247.     VLIBRet := PXNetRecLocked(VLIBTable,IsLocked);
  1248.     if (VLIBRet <> PXSUCCESS) then        
  1249.         BEGIN
  1250.             VLIBRet := VLIBError(VLIBRet);
  1251.             if (VLIBRet <> PXSUCCESS) then                
  1252.                 BEGIN
  1253.                     VLIBNetRecLocked := VLIBRet;
  1254.                     Exit;
  1255.                 END;
  1256.         END;
  1257.     VLIBNetRecLocked := PXSUCCESS;
  1258. END;
  1259.  
  1260. FUNCTION VLIBNetTblChanged(var IsChanged:Boolean):Integer;
  1261. BEGIN
  1262.     VLIBRet := PXNetTblChanged(VLIBTable,IsChanged);
  1263.     if (VLIBRet <> PXSUCCESS) then        
  1264.         BEGIN
  1265.             VLIBRet := VLIBError(VLIBRet);
  1266.             if (VLIBRet <> PXSUCCESS) then                
  1267.                 BEGIN
  1268.                     VLIBNetTblChanged := VLIBRet;
  1269.                     Exit;
  1270.                 END;
  1271.         END;
  1272.     VLIBNetTblChanged := PXSUCCESS;
  1273. END;
  1274.  
  1275. FUNCTION VLIBNetTblRefresh:Integer;
  1276. BEGIN
  1277.     VLIBRet := PXNetTblRefresh(VLIBTable);
  1278.     if (VLIBRet <> PXSUCCESS) then        
  1279.         BEGIN
  1280.             VLIBRet := VLIBError(VLIBRet);
  1281.             if (VLIBRet <> PXSUCCESS) then                
  1282.                 BEGIN
  1283.                     VLIBNetTblRefresh := VLIBRet;
  1284.                     Exit;
  1285.                 END;
  1286.         END;
  1287.     VLIBNetTblRefresh := PXSUCCESS;
  1288. END;
  1289.  
  1290. FUNCTION VLIBNetTblUnlock(LockType:Integer):Integer;
  1291. BEGIN
  1292.     VLIBRet := PXNetTblUnlock(VLIBTable,LockType);
  1293.     if (VLIBRet <> PXSUCCESS) then        
  1294.         BEGIN
  1295.             VLIBRet := VLIBError(VLIBRet);
  1296.             if (VLIBRet <> PXSUCCESS) then                
  1297.                 BEGIN
  1298.                     VLIBNetTblUnLock := VLIBRet;
  1299.                     Exit;
  1300.                 END;
  1301.         END;
  1302.     VLIBNetTblUnlock := PXSUCCESS;
  1303. END;
  1304.  
  1305. FUNCTION VLIBNetTblLock(LockType:Integer):Integer;
  1306. BEGIN
  1307.     VLIBRet := PXNetTblLock(VLIBTable,LockType);
  1308.     if (VLIBRet <> PXSUCCESS) then        
  1309.         BEGIN
  1310.             VLIBRet := VLIBError(VLIBRet);
  1311.             if (VLIBRet <> PXSUCCESS) then                
  1312.                 BEGIN
  1313.                     VLIBNetTblLock := VLIBRet;
  1314.                     Exit;
  1315.                 END;
  1316.         END;
  1317.     VLIBNetTblLock := PXSUCCESS;
  1318. END;
  1319.  
  1320. FUNCTION VLIBNetRecUnlock(LckHandle:LockHandle):Integer;
  1321. BEGIN
  1322.     VLIBRet := PXNetRecUnlock(VLIBTable,LckHandle);
  1323.     if (VLIBRet <> PXSUCCESS) then        
  1324.         BEGIN
  1325.             VLIBRet := VLIBError(VLIBRet);
  1326.             if (VLIBRet <> PXSUCCESS) then                
  1327.                 BEGIN
  1328.                     VLIBNetRecUnLock := VLIBRet;
  1329.                     Exit;
  1330.                 END;
  1331.         END;
  1332.     VLIBNetRecUnlock := PXSUCCESS;
  1333. END;
  1334.  
  1335. FUNCTION VLIBNetRecLock(var LckHandle:LockHandle):Integer;
  1336. BEGIN
  1337.     VLIBRet := PXNetRecLock(VLIBTable,Lckhandle);
  1338.     if (VLIBRet <> PXSUCCESS) then        
  1339.         BEGIN
  1340.             VLIBRet := VLIBError(VLIBRet);
  1341.             if (VLIBRet <> PXSUCCESS) then                
  1342.                 BEGIN
  1343.                     VLIBNetRecLock := VLIBRet;
  1344.                     Exit;
  1345.                 END;
  1346.         END;
  1347.     VLIBNetRecLock := PXSUCCESS;
  1348. END;
  1349.  
  1350. FUNCTION VLIBNetRecGotoLock(LckHandle:LockHandle):Integer;
  1351. BEGIN
  1352.     VLIBRet := PXNetRecGotoLock(VLIBTable,LckHandle);
  1353.     if (VLIBRet <> PXSUCCESS) then        
  1354.         BEGIN
  1355.             VLIBRet := VLIBError(VLIBRet);
  1356.             if (VLIBRet <> PXSUCCESS) then                
  1357.                 BEGIN
  1358.                     VLIBNetRecGotoLock := VLIBRet;
  1359.                     Exit;
  1360.                 END;
  1361.         END;
  1362.     VLIBNetRecGotoLock := PXSUCCESS;
  1363. END;
  1364.  
  1365. FUNCTION VLIBNetFileUnlock(LockType:Integer):Integer;
  1366. BEGIN
  1367.     VLIBRet := PXNetFileUnlock('VLIB.db',LockType);
  1368.     if (VLIBRet <> PXSUCCESS) then        
  1369.         BEGIN
  1370.             VLIBRet := VLIBError(VLIBRet);
  1371.             if (VLIBRet <> PXSUCCESS) then                
  1372.                 BEGIN
  1373.                     VLIBNetFileUnlock := VLIBRet;
  1374.                     Exit;
  1375.                 END;
  1376.         END;
  1377.     VLIBNetFileUnlock := PXSUCCESS;
  1378. END;
  1379.  
  1380. FUNCTION VLIBNetFileLock(LockType:Integer):Integer;
  1381. BEGIN
  1382.     VLIBRet := PXNetFileLock('VLIB.db',LockType);
  1383.     if (VLIBRet <> PXSUCCESS) then        
  1384.         BEGIN
  1385.             VLIBRet := VLIBError(VLIBRet);
  1386.             if (VLIBRet <> PXSUCCESS) then                
  1387.                 BEGIN
  1388.                     VLIBNetFileLock := VLIBRet;
  1389.                     Exit;
  1390.                 END;
  1391.         END;
  1392.     VLIBNetFileLock := PXSUCCESS;
  1393. END;
  1394.  
  1395. FUNCTION VLIBPopulateRecord(var RecordVal:VLIBTABLEENTRY; GetOrPut:GetOrPutType):Integer;
  1396. VAR    
  1397.     Paradate : Longint;
  1398.  
  1399. BEGIN
  1400.     if (GetOrPut = Put) then        
  1401.         BEGIN
  1402.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBCategory,RecordVal.Category);
  1403.             if (VLIBRet <> PXSUCCESS) then                
  1404.                 BEGIN
  1405.                     VLIBRet := VLIBError(VLIBRet);
  1406.                     if (VLIBRet <> PXSUCCESS) then                        
  1407.                         BEGIN
  1408.                             VLIBPopulateRecord := VLIBRet;
  1409.                             Exit;
  1410.                         END;
  1411.                 END;
  1412.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBTitle,RecordVal.Title);
  1413.             if (VLIBRet <> PXSUCCESS) then                
  1414.                 BEGIN
  1415.                     VLIBRet := VLIBError(VLIBRet);
  1416.                     if (VLIBRet <> PXSUCCESS) then                        
  1417.                         BEGIN
  1418.                             VLIBPopulateRecord := VLIBRet;
  1419.                             Exit;
  1420.                         END;
  1421.                 END;
  1422.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBRating,RecordVal.Rating);
  1423.             if (VLIBRet <> PXSUCCESS) then                
  1424.                 BEGIN
  1425.                     VLIBRet := VLIBError(VLIBRet);
  1426.                     if (VLIBRet <> PXSUCCESS) then                        
  1427.                         BEGIN
  1428.                             VLIBPopulateRecord := VLIBRet;
  1429.                             Exit;
  1430.                         END;
  1431.                 END;
  1432.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBDirector,RecordVal.Director);
  1433.             if (VLIBRet <> PXSUCCESS) then                
  1434.                 BEGIN
  1435.                     VLIBRet := VLIBError(VLIBRet);
  1436.                     if (VLIBRet <> PXSUCCESS) then                        
  1437.                         BEGIN
  1438.                             VLIBPopulateRecord := VLIBRet;
  1439.                             Exit;
  1440.                         END;
  1441.                 END;
  1442.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBStars,RecordVal.Stars);
  1443.             if (VLIBRet <> PXSUCCESS) then                
  1444.                 BEGIN
  1445.                     VLIBRet := VLIBError(VLIBRet);
  1446.                     if (VLIBRet <> PXSUCCESS) then                        
  1447.                         BEGIN
  1448.                             VLIBPopulateRecord := VLIBRet;
  1449.                             Exit;
  1450.                         END;
  1451.                 END;
  1452.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBCast,RecordVal.Cast);
  1453.             if (VLIBRet <> PXSUCCESS) then                
  1454.                 BEGIN
  1455.                     VLIBRet := VLIBError(VLIBRet);
  1456.                     if (VLIBRet <> PXSUCCESS) then                        
  1457.                         BEGIN
  1458.                             VLIBPopulateRecord := VLIBRet;
  1459.                             Exit;
  1460.                         END;
  1461.                 END;
  1462.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBCompany,RecordVal.Company);
  1463.             if (VLIBRet <> PXSUCCESS) then                
  1464.                 BEGIN
  1465.                     VLIBRet := VLIBError(VLIBRet);
  1466.                     if (VLIBRet <> PXSUCCESS) then                        
  1467.                         BEGIN
  1468.                             VLIBPopulateRecord := VLIBRet;
  1469.                             Exit;
  1470.                         END;
  1471.                 END;
  1472.             VLIBRet := PXDateEncode(RecordVal.DateMonth,RecordVal.DateDay,RecordVal.DateYear,ParaDate);
  1473.             if (VLIBRet <> PXSUCCESS) then                
  1474.                 BEGIN
  1475.                     VLIBRet := VLIBError(VLIBRet);
  1476.                     if (VLIBRet <> PXSUCCESS) then                        
  1477.                         BEGIN
  1478.                             VLIBPopulateRecord := VLIBRet;
  1479.                             Exit;
  1480.                         END;
  1481.                 END;
  1482.             VLIBRet := PXPutDate(VLIBRecord,VLIBDate,ParaDate);
  1483.             if (VLIBRet <> PXSUCCESS) then                
  1484.                 BEGIN
  1485.                     VLIBRet := VLIBError(VLIBRet);
  1486.                     if (VLIBRet <> PXSUCCESS) then                        
  1487.                         BEGIN
  1488.                             VLIBPopulateRecord := VLIBRet;
  1489.                             Exit;
  1490.                         END;
  1491.                 END;
  1492.             VLIBRet := PXPutDoub(VLIBRecord,VLIBPrice,RecordVal.Price);
  1493.             if (VLIBRet <> PXSUCCESS) then                
  1494.                 BEGIN
  1495.                     VLIBRet := VLIBError(VLIBRet);
  1496.                     if (VLIBRet <> PXSUCCESS) then                        
  1497.                         BEGIN
  1498.                             VLIBPopulateRecord := VLIBRet;
  1499.                             Exit;
  1500.                         END;
  1501.                 END;
  1502.             VLIBRet := PXPutShort(VLIBRecord,VLIBTape,RecordVal.Tape);
  1503.             if (VLIBRet <> PXSUCCESS) then                
  1504.                 BEGIN
  1505.                     VLIBRet := VLIBError(VLIBRet);
  1506.                     if (VLIBRet <> PXSUCCESS) then                        
  1507.                         BEGIN
  1508.                             VLIBPopulateRecord := VLIBRet;
  1509.                             Exit;
  1510.                         END;
  1511.                 END;
  1512.             VLIBRet := PXPutDoub(VLIBRecord,VLIBRunTime,RecordVal.RunTime);
  1513.             if (VLIBRet <> PXSUCCESS) then                
  1514.                 BEGIN
  1515.                     VLIBRet := VLIBError(VLIBRet);
  1516.                     if (VLIBRet <> PXSUCCESS) then                        
  1517.                         BEGIN
  1518.                             VLIBPopulateRecord := VLIBRet;
  1519.                             Exit;
  1520.                         END;
  1521.                 END;
  1522.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBFormat,RecordVal.Format);
  1523.             if (VLIBRet <> PXSUCCESS) then                
  1524.                 BEGIN
  1525.                     VLIBRet := VLIBError(VLIBRet);
  1526.                     if (VLIBRet <> PXSUCCESS) then                        
  1527.                         BEGIN
  1528.                             VLIBPopulateRecord := VLIBRet;
  1529.                             Exit;
  1530.                         END;
  1531.                 END;
  1532.             VLIBRet := PXPutShort(VLIBRecord,VLIBStart,RecordVal.Start);
  1533.             if (VLIBRet <> PXSUCCESS) then                
  1534.                 BEGIN
  1535.                     VLIBRet := VLIBError(VLIBRet);
  1536.                     if (VLIBRet <> PXSUCCESS) then                        
  1537.                         BEGIN
  1538.                             VLIBPopulateRecord := VLIBRet;
  1539.                             Exit;
  1540.                         END;
  1541.                 END;
  1542.             VLIBRet := PXPutShort(VLIBRecord,VLIBStop,RecordVal.Stop);
  1543.             if (VLIBRet <> PXSUCCESS) then                
  1544.                 BEGIN
  1545.                     VLIBRet := VLIBError(VLIBRet);
  1546.                     if (VLIBRet <> PXSUCCESS) then                        
  1547.                         BEGIN
  1548.                             VLIBPopulateRecord := VLIBRet;
  1549.                             Exit;
  1550.                         END;
  1551.                 END;
  1552.             VLIBRet := PXPutAlpha(VLIBRecord,VLIBRunSpeed,RecordVal.RunSpeed);
  1553.             if (VLIBRet <> PXSUCCESS) then                
  1554.                 BEGIN
  1555.                     VLIBRet := VLIBError(VLIBRet);
  1556.                     if (VLIBRet <> PXSUCCESS) then                        
  1557.                         BEGIN
  1558.                             VLIBPopulateRecord := VLIBRet;
  1559.                             Exit;
  1560.                         END;
  1561.                 END;
  1562.         END
  1563.     else        
  1564.         BEGIN
  1565.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBCategory,RecordVal.Category);
  1566.             if (VLIBRet <> PXSUCCESS) then                
  1567.                 BEGIN
  1568.                     VLIBRet := VLIBError(VLIBRet);
  1569.                     if (VLIBRet <> PXSUCCESS) then                        
  1570.                         BEGIN
  1571.                             VLIBPopulateRecord := VLIBRet;
  1572.                             Exit;
  1573.                         END;
  1574.                 END;
  1575.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBTitle,RecordVal.Title);
  1576.             if (VLIBRet <> PXSUCCESS) then                
  1577.                 BEGIN
  1578.                     VLIBRet := VLIBError(VLIBRet);
  1579.                     if (VLIBRet <> PXSUCCESS) then                        
  1580.                         BEGIN
  1581.                             VLIBPopulateRecord := VLIBRet;
  1582.                             Exit;
  1583.                         END;
  1584.                 END;
  1585.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBRating,RecordVal.Rating);
  1586.             if (VLIBRet <> PXSUCCESS) then                
  1587.                 BEGIN
  1588.                     VLIBRet := VLIBError(VLIBRet);
  1589.                     if (VLIBRet <> PXSUCCESS) then                        
  1590.                         BEGIN
  1591.                             VLIBPopulateRecord := VLIBRet;
  1592.                             Exit;
  1593.                         END;
  1594.                 END;
  1595.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBDirector,RecordVal.Director);
  1596.             if (VLIBRet <> PXSUCCESS) then                
  1597.                 BEGIN
  1598.                     VLIBRet := VLIBError(VLIBRet);
  1599.                     if (VLIBRet <> PXSUCCESS) then                        
  1600.                         BEGIN
  1601.                             VLIBPopulateRecord := VLIBRet;
  1602.                             Exit;
  1603.                         END;
  1604.                 END;
  1605.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBStars,RecordVal.Stars);
  1606.             if (VLIBRet <> PXSUCCESS) then                
  1607.                 BEGIN
  1608.                     VLIBRet := VLIBError(VLIBRet);
  1609.                     if (VLIBRet <> PXSUCCESS) then                        
  1610.                         BEGIN
  1611.                             VLIBPopulateRecord := VLIBRet;
  1612.                             Exit;
  1613.                         END;
  1614.                 END;
  1615.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBCast,RecordVal.Cast);
  1616.             if (VLIBRet <> PXSUCCESS) then                
  1617.                 BEGIN
  1618.                     VLIBRet := VLIBError(VLIBRet);
  1619.                     if (VLIBRet <> PXSUCCESS) then                        
  1620.                         BEGIN
  1621.                             VLIBPopulateRecord := VLIBRet;
  1622.                             Exit;
  1623.                         END;
  1624.                 END;
  1625.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBCompany,RecordVal.Company);
  1626.             if (VLIBRet <> PXSUCCESS) then                
  1627.                 BEGIN
  1628.                     VLIBRet := VLIBError(VLIBRet);
  1629.                     if (VLIBRet <> PXSUCCESS) then                        
  1630.                         BEGIN
  1631.                             VLIBPopulateRecord := VLIBRet;
  1632.                             Exit;
  1633.                         END;
  1634.                 END;
  1635.             VLIBRet := PXGetDate(VLIBRecord,VLIBDate,ParaDate);
  1636.             if (VLIBRet <> PXSUCCESS) then                
  1637.                 BEGIN
  1638.                     VLIBRet := VLIBError(VLIBRet);
  1639.                     if (VLIBRet <> PXSUCCESS) then                        
  1640.                         BEGIN
  1641.                             VLIBPopulateRecord := VLIBRet;
  1642.                             Exit;
  1643.                         END;
  1644.                 END;
  1645.             VLIBRet := PXDateDecode(ParaDate,RecordVal.DateMonth,RecordVal.DateDay,RecordVal.DateYear);
  1646.             if (VLIBRet <> PXSUCCESS) then                
  1647.                 BEGIN
  1648.                     VLIBRet := VLIBError(VLIBRet);
  1649.                     if (VLIBRet <> PXSUCCESS) then                        
  1650.                         BEGIN
  1651.                             VLIBPopulateRecord := VLIBRet;
  1652.                             Exit;
  1653.                         END;
  1654.                 END;
  1655.             VLIBRet := PXGetDoub(VLIBRecord,VLIBPrice,RecordVal.Price);
  1656.             if (VLIBRet <> PXSUCCESS) then                
  1657.                 BEGIN
  1658.                     VLIBRet := VLIBError(VLIBRet);
  1659.                     if (VLIBRet <> PXSUCCESS) then                        
  1660.                         BEGIN
  1661.                             VLIBPopulateRecord := VLIBRet;
  1662.                             Exit;
  1663.                         END;
  1664.                 END;
  1665.             VLIBRet := PXGetShort(VLIBRecord,VLIBTape,RecordVal.Tape);
  1666.             if (VLIBRet <> PXSUCCESS) then                
  1667.                 BEGIN
  1668.                     VLIBRet := VLIBError(VLIBRet);
  1669.                     if (VLIBRet <> PXSUCCESS) then                        
  1670.                         BEGIN
  1671.                             VLIBPopulateRecord := VLIBRet;
  1672.                             Exit;
  1673.                         END;
  1674.                 END;
  1675.             VLIBRet := PXGetDoub(VLIBRecord,VLIBRunTime,RecordVal.RunTime);
  1676.             if (VLIBRet <> PXSUCCESS) then                
  1677.                 BEGIN
  1678.                     VLIBRet := VLIBError(VLIBRet);
  1679.                     if (VLIBRet <> PXSUCCESS) then                        
  1680.                         BEGIN
  1681.                             VLIBPopulateRecord := VLIBRet;
  1682.                             Exit;
  1683.                         END;
  1684.                 END;
  1685.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBFormat,RecordVal.Format);
  1686.             if (VLIBRet <> PXSUCCESS) then                
  1687.                 BEGIN
  1688.                     VLIBRet := VLIBError(VLIBRet);
  1689.                     if (VLIBRet <> PXSUCCESS) then                        
  1690.                         BEGIN
  1691.                             VLIBPopulateRecord := VLIBRet;
  1692.                             Exit;
  1693.                         END;
  1694.                 END;
  1695.             VLIBRet := PXGetShort(VLIBRecord,VLIBStart,RecordVal.Start);
  1696.             if (VLIBRet <> PXSUCCESS) then                
  1697.                 BEGIN
  1698.                     VLIBRet := VLIBError(VLIBRet);
  1699.                     if (VLIBRet <> PXSUCCESS) then                        
  1700.                         BEGIN
  1701.                             VLIBPopulateRecord := VLIBRet;
  1702.                             Exit;
  1703.                         END;
  1704.                 END;
  1705.             VLIBRet := PXGetShort(VLIBRecord,VLIBStop,RecordVal.Stop);
  1706.             if (VLIBRet <> PXSUCCESS) then                
  1707.                 BEGIN
  1708.                     VLIBRet := VLIBError(VLIBRet);
  1709.                     if (VLIBRet <> PXSUCCESS) then                        
  1710.                         BEGIN
  1711.                             VLIBPopulateRecord := VLIBRet;
  1712.                             Exit;
  1713.                         END;
  1714.                 END;
  1715.             VLIBRet := PXGetAlpha(VLIBRecord,VLIBRunSpeed,RecordVal.RunSpeed);
  1716.             if (VLIBRet <> PXSUCCESS) then                
  1717.                 BEGIN
  1718.                     VLIBRet := VLIBError(VLIBRet);
  1719.                     if (VLIBRet <> PXSUCCESS) then                        
  1720.                         BEGIN
  1721.                             VLIBPopulateRecord := VLIBRet;
  1722.                             Exit;
  1723.                         END;
  1724.                 END;
  1725.         END;
  1726.     VLIBPopulateRecord := PXSUCCESS;
  1727. END;
  1728.  
  1729. END.
  1730.